import 'dart:typed_data';

import 'package:bluetooth_protocols_plugin/library.dart';

/*
  typedef ARM_PACKED struct{
    uint32_t hmic_run_mode      : 3; //0 失能状态         1 工作状态
                                     //2 休眠状态         3 锁车状态
    uint32_t mc_run_mode        : 3; //0 正常失能状态     1 正常平衡状态
                                     //2 保护翘板状态     3 保护失能状态
                                     //4 电机锁死状态     5 空载保护状态
                                     //6 负载检测状态     7 辅助平衡状态
    uint32_t motor_work         : 1; //0 电机在非工作状态 1 电机在工作状态
    uint32_t charge_state       : 1; //0 非充电状态       1 充电状态
    uint32_t backup_battery     : 1; //0 备用电池未接入   1 备用电池已接入
    uint32_t charge_port_detect : 3; //0 无任何设备接入     1 充电器插入   2 备用电池输出口插入  3 另一台车的直流输出口接入  4 不能识别的设备

    uint32_t charge_port_on     : 1; //0 充电口关闭状态     1 充电口开启状态
    uint32_t dc_port_detect     : 3; //0 无任何设备接入     1 逆变器插入   2 备用电池充电口插入  3 另一台车的充电口接入  4 不能识别的设备
    uint32_t dc_output_enable   : 1; //0 直流输出口关闭     1 直流输出口开启
    uint32_t lamp_state         : 1; //0 照明灯关闭状态   1 照明灯开启状态
    uint32_t decorative_light   : 1; //0 装饰灯关闭状态   1 装饰灯开启状态
    uint32_t lifted             : 1; //0 提手未触发状态   1 提手触发状态
    uint32_t tail_light         : 3; //0 尾灯关闭状态
                                     //1 尾灯低亮状态
                                     //2 尾灯高亮状态（刹车指示）
                                     //3 尾灯闪烁状态
                                     //4~7 保留
    uint32_t fan_work           : 1; //0 风扇关闭状态     1 风扇开启状态
    uint32_t brake              : 1; //0 非制动状态       1 制动状态
    uint32_t slow_down          : 1; //0 非减速状态       1 减速状态（和刹车指示灯同步，但不一定是制动状态）
    uint32_t dfu_state          : 1; //0 无固件升级       1 有设备在固件升级中
    uint32_t reserve            : 5; //保留
  }GNUC_PACKED VX_STATE;
*/

// RsJet 实时状态
class RsJetRealtimeStatus extends LorinRealtimeStatus {
  // 从字节数据解析
  RsJetRealtimeStatus.fromBytes(Uint8List bytes) : super.fromBytes(bytes);

  // 将对象转换为Map
  @override
  Map<String, dynamic> toMap() {
    var map = super.toMap(); // 先获取父类的 Map
    map['version'] = '$runtimeType';
    return map;
  }
}
